<template>
    <div>
        <body id="paper">
        <el-form :model="loginForm" :rules="rules" class="login-container" label-position="left"
                 label-width="0px" v-loading="loading" ref="loginForm">
            <h3 class="login_title">登录</h3>
            <el-form-item prop="username">
                <el-input type="text" v-model="loginForm.username"
                          auto-complete="off" placeholder="请输入账号"></el-input>
            </el-form-item>
            <el-form-item prop="password">
                <el-input type="password" v-model="loginForm.password"
                          auto-complete="off" placeholder="请输入密码"></el-input>
            </el-form-item>
            <el-checkbox class="login_remember" v-model="checked"
                         label-position="left"><span style="color: #505458">记住密码 </span></el-checkbox>
            <el-form-item style="width: 100%">
                <el-button type="primary" style="width: 40%;background: #505458;border: none"
                           v-on:click="submitForm('loginForm')">登录
                </el-button>
                <router-link to="blog">
                    <el-button type="primary" style="width: 40%;background: #505348;border: none">返回首页
                    </el-button>
                </router-link>


            </el-form-item>
            <h5><a href="/register"> 还没有账号？去注册</a></h5>
        </el-form>
        </body>
    </div>

</template>

<script>
    export default {
        name: "Login",
        data() {
            return {
                rules: {
                    username: [{required: true, message: '用户名不能为空 Username can not be empty', trigger: 'blur'}],
                    password: [{required: true, message: '密码不能为空 Password can not be empty', trigger: 'change'}]
                },
                checked: true,
                // 实际数据
                loginForm: {
                    username: '',
                    password: ''
                },
                loading: false,
            }
        },
        methods: {
            submitForm(formName) {
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        const _this = this;
                        //已在axios.js中自定义了前置及后置拦截器
                        this.$axios.post("/login", this.loginForm).then(res => {
                            console.log(res.headers);
                            const jwt = res.headers["authorization"]; //获取jwt
                            const userInfo = res.data.data; //获取用户信息
                            //存储(共享)全局变量jwt和userInfo
                            _this.$store.commit("SET_TOKEN", jwt);
                            _this.$store.commit("SET_USERINFO", userInfo);

                            //console.log(_this.$store.getters.getToken)
                            //console.log(_this.$store.getters.getUserInfo)
                            _this.$router.push("/blog") //跳转到文章列表页
                        })
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
            },
            resetForm(formName) {
                this.$refs[formName].resetFields();
            }
        }
    }
</script>

<style scoped>

    #paper {
        background: url("../../assets/img/background/eva1.jpg") no-repeat;
        background-position: center;
        height: 100%;
        width: 100%;
        background-size: cover;
        position: fixed;
    }

    body {
        margin: 0;
    }

    .login-container {
        border-radius: 15px;
        background-clip: padding-box;
        margin: 90px auto;
        width: 350px;
        padding: 35px 35px 15px 35px;
        background: #fff;
        border: 1px solid #eaeaea;
        box-shadow: 0 0 25px #cac6c6;

    }

    .login_title {
        margin: 0px auto 40px auto;
        text-align: center;
        color: #505458;
    }

    .login_remember {
        margin: 0px 0px 35px 0px;
        text-align: left;
    }

    .calender-size {
        height: 200px;
        width: 200px;
    }
</style>
